package com.jmb.api.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;



/**
 * interfaceCaseId 用例编号
 * executor 执行人，若作为依赖数据应用则应该传参‘系统调度’
 * suiteLogNo 测试套件日志编号 主要为调用入口为测试套件时使用，否则传参null
 * chainNo 调用链路跟踪 每次调用均会将自增日志编号写入缓存，再序列化
 * suiteId 测试套件编号，主要用于调用入口为测试套件时确定运行环境，否则应该传参null
 * isFailedRetry 判断该执行日志是否为失败重试，0是1否，主要用于测试报告统计断言情况
 * suiteLogDetailNo suiteLogNo仅记录重跑和真正运行的，suiteLogDetailNo会包括用例所依赖的case
 * globalHeaders 全局headers
 * globalParams 全局params
 * globalData 全局data
 * source 来源（0用例调试 1依赖调试 2运行整个测试套件 3测试套件单个用例调试 4依赖解析 5综合用例-前置用例）
 * casePreNo 前置用例的参数缓存用的key，为了防止异步执行用例时，tempPostProcessor key被覆盖， 仅前置用例执行时，需要该参数
 * skipPreCase 是否跳过执行前置用例，当用例作为前置用例执行时，应该跳过前置用例的前置用例，仅执行自身
 */


/**
 * 执行接口用例参数实体类
 * 用于封装执行接口测试用例时所需的各类参数信息
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExecuteInterfaceCaseParam {
    
    /**
     * 接口用例编号
     */
    private Long interfaceCaseId;
    
    /**
     * 执行人标识
     * 若作为依赖数据应用则应该传参'系统调度'
     */
    private String executor;
    
    /**
     * 测试套件日志编号
     * 主要为调用入口为测试套件时使用，否则传参null
     */
    private String suiteLogNo;
    
    /**
     * 调用链路跟踪标识
     * 每次调用均会将自增日志编号写入缓存，再序列化
     */
    private String chainNo;
    
    /**
     * 测试套件编号
     * 主要用于调用入口为测试套件时确定运行环境，否则应该传参null
     */
    private Long suiteId;
    
    /**
     * 失败重试标识
     * 判断该执行日志是否为失败重试，0是1否，主要用于测试报告统计断言情况
     */
    private Integer isFailedRetry;
    
    /**
     * 测试套件详细日志编号
     * suiteLogNo仅记录重跑和真正运行的，suiteLogDetailNo会包括用例所依赖的case
     */
    private String suiteLogDetailNo;
    
    /**
     * 全局请求头参数
     */
    private HashMap globalHeaders;
    
    /**
     * 全局请求参数
     */
    private HashMap globalParams;
    
    /**
     * 全局数据
     */
    private HashMap globalData;
    
    /**
     * 执行来源标识
     * （0用例调试 1依赖调试 2运行整个测试套件 3测试套件单个用例调试 4依赖解析 5综合用例-前置用例）
     */
    private Integer source;
    
    /**
     * 前置用例参数缓存键
     * 为了防止异步执行用例时，tempPostProcessor key被覆盖，仅前置用例执行时，需要该参数
     */
    private String casePreNo;
    
    /**
     * 是否跳过执行前置用例标识
     * 当用例作为前置用例执行时，应该跳过前置用例的前置用例，仅执行自身
     */
    private Boolean skipPreCase;

}